home *** CD-ROM | disk | FTP | other *** search
/ Cre@te Online 2000 December / Cre@teOnline CD05.iso / MacSoft / XML ConsoleMax.sea / XML ConsoleMax / Required / swingall.jar / javax / swing / SwingGraphics.class (.txt) < prev    next >
Encoding:
Java Class File  |  1999-07-15  |  9.2 KB  |  428 lines

  1. package javax.swing;
  2.  
  3. import java.awt.Color;
  4. import java.awt.Font;
  5. import java.awt.FontMetrics;
  6. import java.awt.Graphics;
  7. import java.awt.Image;
  8. import java.awt.Polygon;
  9. import java.awt.Rectangle;
  10. import java.awt.Shape;
  11. import java.awt.image.ImageObserver;
  12. import java.util.Stack;
  13.  
  14. class SwingGraphics extends Graphics implements GraphicsWrapper {
  15.    Graphics graphics;
  16.    Graphics originalGraphics;
  17.    Rectangle clipRect;
  18.    Color currentColor;
  19.    Font currentFont;
  20.    Color currentXORMode;
  21.    int translateX = 0;
  22.    int translateY = 0;
  23.    SwingGraphics previous;
  24.    private static final boolean TRACE = false;
  25.    private static final boolean VERBOSE = false;
  26.    private static final boolean DEBUG = false;
  27.    private static Stack pool = new Stack();
  28.  
  29.    static {
  30.       if (SwingUtilities.is1dot2) {
  31.          System.err.println("warning: running 1.1 version of SwingGraphics");
  32.       }
  33.  
  34.    }
  35.  
  36.    SwingGraphics(Graphics var1) {
  37.       if (var1 == null) {
  38.          Thread.dumpStack();
  39.       }
  40.  
  41.       this.init(var1);
  42.    }
  43.  
  44.    private void _changeClip(int var1, int var2, int var3, int var4, boolean var5) {
  45.       if (var5) {
  46.          this.clipRect.x = var1;
  47.          this.clipRect.y = var2;
  48.          this.clipRect.width = var3;
  49.          this.clipRect.height = var4;
  50.       } else {
  51.          SwingUtilities.computeIntersection(var1, var2, var3, var4, this.clipRect);
  52.       }
  53.  
  54.    }
  55.  
  56.    public void clearRect(int var1, int var2, int var3, int var4) {
  57.       this.graphics.clearRect(var1, var2, var3, var4);
  58.    }
  59.  
  60.    public void clipRect(int var1, int var2, int var3, int var4) {
  61.       this.graphics.clipRect(var1, var2, var3, var4);
  62.       this._changeClip(var1, var2, var3, var4, false);
  63.    }
  64.  
  65.    public void copyArea(int var1, int var2, int var3, int var4, int var5, int var6) {
  66.       this.graphics.copyArea(var1, var2, var3, var4, var5, var6);
  67.    }
  68.  
  69.    public Graphics create() {
  70.       return createSwingGraphics(this);
  71.    }
  72.  
  73.    public Graphics create(int var1, int var2, int var3, int var4) {
  74.       return createSwingGraphics(this, var1, var2, var3, var4);
  75.    }
  76.  
  77.    public static Graphics createSwingGraphics(Graphics var0) {
  78.       if (var0 == null) {
  79.          Thread.dumpStack();
  80.          return null;
  81.       } else {
  82.          SwingGraphics var1 = getRecycledSwingGraphics();
  83.          if (var1 == null) {
  84.             var1 = new SwingGraphics(var0);
  85.          } else {
  86.             var1.init(var0);
  87.          }
  88.  
  89.          return var1;
  90.       }
  91.    }
  92.  
  93.    static Graphics createSwingGraphics(Graphics var0, int var1, int var2, int var3, int var4) {
  94.       SwingGraphics var5 = (SwingGraphics)createSwingGraphics(var0);
  95.       if (var1 != 0 || var2 != 0) {
  96.          var5.translate(var1, var2);
  97.       }
  98.  
  99.       if (var5.clipRect.x != 0 || var5.clipRect.y != 0 || var5.clipRect.width != var3 || var5.clipRect.height != var4) {
  100.          int var6 = var5.clipRect.x > 0 ? var5.clipRect.x : 0;
  101.          int var7 = var5.clipRect.y > 0 ? var5.clipRect.y : 0;
  102.          int var8 = Math.min(var3, var5.clipRect.x + var5.clipRect.width) - var6;
  103.          int var9 = Math.min(var4, var5.clipRect.y + var5.clipRect.height) - var7;
  104.          var5.setClip(var6, var7, var8, var9);
  105.       }
  106.  
  107.       return var5;
  108.    }
  109.  
  110.    public void dispose() {
  111.       if (this.graphics != null) {
  112.          if (this.previous != null) {
  113.             this.resetGraphics();
  114.          } else {
  115.             this.graphics.dispose();
  116.             this.translateX = this.translateY = 0;
  117.          }
  118.       } else {
  119.          this.translateX = this.translateY = 0;
  120.       }
  121.  
  122.       this.graphics = null;
  123.       recycleSwingGraphics(this);
  124.    }
  125.  
  126.    public void draw3DRect(int var1, int var2, int var3, int var4, boolean var5) {
  127.       this.graphics.draw3DRect(var1, var2, var3, var4, var5);
  128.    }
  129.  
  130.    public void drawArc(int var1, int var2, int var3, int var4, int var5, int var6) {
  131.       this.graphics.drawArc(var1, var2, var3, var4, var5, var6);
  132.    }
  133.  
  134.    public void drawBytes(byte[] var1, int var2, int var3, int var4, int var5) {
  135.       this.graphics.drawBytes(var1, var2, var3, var4, var5);
  136.    }
  137.  
  138.    public void drawChars(char[] var1, int var2, int var3, int var4, int var5) {
  139.       this.graphics.drawChars(var1, var2, var3, var4, var5);
  140.    }
  141.  
  142.    public boolean drawImage(Image var1, int var2, int var3, int var4, int var5, int var6, int var7, int var8, int var9, Color var10, ImageObserver var11) {
  143.       return this.graphics.drawImage(var1, var2, var3, var4, var5, var6, var7, var8, var9, var10, var11);
  144.    }
  145.  
  146.    public boolean drawImage(Image var1, int var2, int var3, int var4, int var5, int var6, int var7, int var8, int var9, ImageObserver var10) {
  147.       return this.graphics.drawImage(var1, var2, var3, var4, var5, var6, var7, var8, var9, var10);
  148.    }
  149.  
  150.    public boolean drawImage(Image var1, int var2, int var3, int var4, int var5, Color var6, ImageObserver var7) {
  151.       return this.graphics.drawImage(var1, var2, var3, var4, var5, var6, var7);
  152.    }
  153.  
  154.    public boolean drawImage(Image var1, int var2, int var3, int var4, int var5, ImageObserver var6) {
  155.       return this.graphics.drawImage(var1, var2, var3, var4, var5, var6);
  156.    }
  157.  
  158.    public boolean drawImage(Image var1, int var2, int var3, Color var4, ImageObserver var5) {
  159.       return this.graphics.drawImage(var1, var2, var3, var4, var5);
  160.    }
  161.  
  162.    public boolean drawImage(Image var1, int var2, int var3, ImageObserver var4) {
  163.       return this.graphics.drawImage(var1, var2, var3, var4);
  164.    }
  165.  
  166.    public void drawLine(int var1, int var2, int var3, int var4) {
  167.       this.graphics.drawLine(var1, var2, var3, var4);
  168.    }
  169.  
  170.    public void drawOval(int var1, int var2, int var3, int var4) {
  171.       this.graphics.drawOval(var1, var2, var3, var4);
  172.    }
  173.  
  174.    public void drawPolygon(Polygon var1) {
  175.       this.graphics.drawPolygon(var1);
  176.    }
  177.  
  178.    public void drawPolygon(int[] var1, int[] var2, int var3) {
  179.       this.graphics.drawPolygon(var1, var2, var3);
  180.    }
  181.  
  182.    public void drawPolyline(int[] var1, int[] var2, int var3) {
  183.       this.graphics.drawPolyline(var1, var2, var3);
  184.    }
  185.  
  186.    public void drawRect(int var1, int var2, int var3, int var4) {
  187.       this.graphics.drawRect(var1, var2, var3, var4);
  188.    }
  189.  
  190.    public void drawRoundRect(int var1, int var2, int var3, int var4, int var5, int var6) {
  191.       this.graphics.drawRoundRect(var1, var2, var3, var4, var5, var6);
  192.    }
  193.  
  194.    public void drawString(String var1, int var2, int var3) {
  195.       this.graphics.drawString(var1, var2, var3);
  196.    }
  197.  
  198.    public void fill3DRect(int var1, int var2, int var3, int var4, boolean var5) {
  199.       this.graphics.fill3DRect(var1, var2, var3, var4, var5);
  200.    }
  201.  
  202.    public void fillArc(int var1, int var2, int var3, int var4, int var5, int var6) {
  203.       this.graphics.fillArc(var1, var2, var3, var4, var5, var6);
  204.    }
  205.  
  206.    public void fillOval(int var1, int var2, int var3, int var4) {
  207.       this.graphics.fillOval(var1, var2, var3, var4);
  208.    }
  209.  
  210.    public void fillPolygon(Polygon var1) {
  211.       this.graphics.fillPolygon(var1);
  212.    }
  213.  
  214.    public void fillPolygon(int[] var1, int[] var2, int var3) {
  215.       this.graphics.fillPolygon(var1, var2, var3);
  216.    }
  217.  
  218.    public void fillRect(int var1, int var2, int var3, int var4) {
  219.       this.graphics.fillRect(var1, var2, var3, var4);
  220.    }
  221.  
  222.    public void fillRoundRect(int var1, int var2, int var3, int var4, int var5, int var6) {
  223.       this.graphics.fillRoundRect(var1, var2, var3, var4, var5, var6);
  224.    }
  225.  
  226.    public void finalize() {
  227.       this.graphics.finalize();
  228.    }
  229.  
  230.    public Shape getClip() {
  231.       return this.graphics.getClip();
  232.    }
  233.  
  234.    public Rectangle getClipBounds() {
  235.       return new Rectangle(this.clipRect);
  236.    }
  237.  
  238.    public int getClipHeight() {
  239.       return this.clipRect.height;
  240.    }
  241.  
  242.    public Rectangle getClipRect() {
  243.       return this.graphics.getClipRect();
  244.    }
  245.  
  246.    public int getClipWidth() {
  247.       return this.clipRect.width;
  248.    }
  249.  
  250.    public int getClipX() {
  251.       return this.clipRect.x;
  252.    }
  253.  
  254.    public int getClipY() {
  255.       return this.clipRect.y;
  256.    }
  257.  
  258.    public Color getColor() {
  259.       return this.currentColor;
  260.    }
  261.  
  262.    public Font getFont() {
  263.       return this.currentFont;
  264.    }
  265.  
  266.    public FontMetrics getFontMetrics() {
  267.       return this.graphics.getFontMetrics();
  268.    }
  269.  
  270.    public FontMetrics getFontMetrics(Font var1) {
  271.       return this.graphics.getFontMetrics(var1);
  272.    }
  273.  
  274.    private static SwingGraphics getRecycledSwingGraphics() {
  275.       SwingGraphics var0 = null;
  276.       Stack var1 = pool;
  277.       synchronized(var1){}
  278.  
  279.       try {
  280.          if (pool.size() > 0) {
  281.             var0 = (SwingGraphics)pool.pop();
  282.          }
  283.       } catch (Throwable var3) {
  284.          throw var3;
  285.       }
  286.  
  287.       return var0;
  288.    }
  289.  
  290.    void init(Graphics var1) {
  291.       if (var1 instanceof SwingGraphics) {
  292.          SwingGraphics var2 = (SwingGraphics)var1;
  293.          this.originalGraphics = var2.originalGraphics;
  294.          this.graphics = var2.graphics;
  295.          this.previous = var2;
  296.          if (this.clipRect == null) {
  297.             this.clipRect = new Rectangle(var2.clipRect.x, var2.clipRect.y, var2.clipRect.width, var2.clipRect.height);
  298.          } else {
  299.             this.clipRect.x = var2.clipRect.x;
  300.             this.clipRect.y = var2.clipRect.y;
  301.             this.clipRect.width = var2.clipRect.width;
  302.             this.clipRect.height = var2.clipRect.height;
  303.          }
  304.  
  305.          this.currentColor = var2.currentColor;
  306.          this.currentFont = var2.currentFont;
  307.          this.currentXORMode = var2.currentXORMode;
  308.       } else {
  309.          this.originalGraphics = var1;
  310.          this.graphics = var1.create();
  311.          this.previous = null;
  312.          Rectangle var3 = var1.getClipBounds();
  313.          if (var3 == null) {
  314.             if (this.clipRect == null) {
  315.                this.clipRect = new Rectangle(0, 0, Integer.MAX_VALUE, Integer.MAX_VALUE);
  316.             } else {
  317.                this.clipRect.x = this.clipRect.y = 0;
  318.                this.clipRect.width = this.clipRect.height = Integer.MAX_VALUE;
  319.             }
  320.          } else {
  321.             this.clipRect = var3;
  322.          }
  323.  
  324.          this.currentColor = var1.getColor();
  325.          this.currentFont = var1.getFont();
  326.          this.currentXORMode = null;
  327.       }
  328.  
  329.    }
  330.  
  331.    public boolean isClipIntersecting(Rectangle var1) {
  332.       return this.clipRect.x < var1.x + var1.width && this.clipRect.x + this.clipRect.width > var1.x && this.clipRect.y < var1.y + var1.height && this.clipRect.y + this.clipRect.height > var1.y ? (this.clipRect.width == 0 || this.clipRect.height == 0 || var1.width == 0 || var1.height == 0) ^ true : false;
  333.    }
  334.  
  335.    private static void recycleSwingGraphics(SwingGraphics var0) {
  336.       Stack var1 = pool;
  337.       synchronized(var1){}
  338.  
  339.       try {
  340.          pool.push(var0);
  341.       } catch (Throwable var3) {
  342.          throw var3;
  343.       }
  344.  
  345.    }
  346.  
  347.    private void resetGraphics() {
  348.       if (this.currentFont != this.previous.currentFont) {
  349.          this.setFont(this.previous.currentFont);
  350.       }
  351.  
  352.       if (this.currentColor != this.previous.currentColor) {
  353.          this.setColor(this.previous.currentColor);
  354.       }
  355.  
  356.       if (this.currentXORMode != this.previous.currentXORMode) {
  357.          if (this.previous.currentXORMode == null) {
  358.             this.setPaintMode();
  359.          } else {
  360.             this.setXORMode(this.previous.currentXORMode);
  361.          }
  362.       }
  363.  
  364.       if (this.translateX != 0 || this.translateY != 0) {
  365.          this.translate(-this.translateX, -this.translateY);
  366.       }
  367.  
  368.       if (this.clipRect.x != this.previous.clipRect.x || this.clipRect.y != this.previous.clipRect.y || this.clipRect.width != this.previous.clipRect.width || this.clipRect.height != this.previous.clipRect.height) {
  369.          this.setClip(this.previous.clipRect.x, this.previous.clipRect.y, this.previous.clipRect.width, this.previous.clipRect.height);
  370.       }
  371.  
  372.    }
  373.  
  374.    public void setClip(int var1, int var2, int var3, int var4) {
  375.       this.graphics.setClip(var1, var2, var3, var4);
  376.       this._changeClip(var1, var2, var3, var4, true);
  377.    }
  378.  
  379.    public void setClip(Shape var1) {
  380.       this.graphics.setClip(var1);
  381.       if (var1 instanceof Rectangle) {
  382.          Rectangle var2 = (Rectangle)var1;
  383.          this._changeClip(var2.x, var2.y, var2.width, var2.height, true);
  384.       }
  385.  
  386.    }
  387.  
  388.    public void setColor(Color var1) {
  389.       this.graphics.setColor(var1);
  390.       this.currentColor = var1;
  391.    }
  392.  
  393.    public void setFont(Font var1) {
  394.       this.graphics.setFont(var1);
  395.       this.currentFont = var1;
  396.    }
  397.  
  398.    public void setPaintMode() {
  399.       this.graphics.setPaintMode();
  400.       this.currentXORMode = null;
  401.    }
  402.  
  403.    public void setXORMode(Color var1) {
  404.       this.graphics.setXORMode(var1);
  405.       this.currentXORMode = var1;
  406.    }
  407.  
  408.    public Graphics subGraphics() {
  409.       return this.graphics;
  410.    }
  411.  
  412.    public String toString() {
  413.       String var1 = this.currentFont.toString();
  414.       var1 = var1.substring(var1.indexOf(91));
  415.       return "SwingGraphics(0x" + Integer.toHexString(this.hashCode()) + ") [subGraphics " + this.originalGraphics.getClass().getName() + "\n   translate [x=" + this.translateX + ",y=" + this.translateY + "] clip [x=" + this.clipRect.x + ",y=" + this.clipRect.y + ",w=" + this.clipRect.width + ",h=" + this.clipRect.height + "]\n   color [r=" + this.currentColor.getRed() + ",g=" + this.currentColor.getGreen() + ",b=" + this.currentColor.getBlue() + "] font " + var1 + "]";
  416.    }
  417.  
  418.    public void translate(int var1, int var2) {
  419.       this.graphics.translate(var1, var2);
  420.       this.translateX += var1;
  421.       this.translateY += var2;
  422.       Rectangle var10000 = this.clipRect;
  423.       var10000.x -= var1;
  424.       var10000 = this.clipRect;
  425.       var10000.y -= var2;
  426.    }
  427. }
  428.